#include "tcpserver.hpp"
#include"command.hpp"
string echo_repeat(string mess,inetaddr addr){
     string ret;
     ret+="return $: ";
     ret+=mess;
     return ret;

}
int main(int argc, char *argv[])
{

    if (argc != 2)
    {
        std::cerr << "please use: " << argv[0] << " port" << std::endl;
        return 1;
    }

    consolestrategy;

    uint16_t port = stoi(argv[1]);
    //1·简单通信：
   unique_ptr<tcpserver> ur=make_unique<tcpserver>(port,echo_repeat);

   //2·英汉翻译：
//    dict dt;
//    dt.loaddict();
//     unique_ptr<tcpserver> ur=make_unique<tcpserver>(port,[&dt](const string mess,inetaddr addr)-> string{
//         //如果不&就不能对它发生修改则默认带上const了
//        return  dt.translate(mess,addr);
//        //const对象只能调用const的成员函数
//     });

  //3·执行命令并显示：
    //   com cm;
    //   unique_ptr<tcpserver> ur=make_unique<tcpserver>(port,[&cm](string mess,inetaddr addr)-> string{
    //            return  cm.excute(mess,addr);
    //         });
 //这里如果服务端绑定了一个指定的端口号然后推出了；此时还有客户端没有退出；下次就必须服务端更换端口号才行
    ur->init();
    ur->start();
    return 0;
}
